<?php use_helper('jQuery', 'I18N', 'Date') ?>

<?php if (!$numero){$numero=" --- ";}?>
<div id="nuevo" title="<?php echo __("Nueva factura nº ").$numero?>">
<form action="<?php echo url_for('factura/'.($form->getObject()->isNew() ? 'create' : 'update').(!$form->getObject()->isNew() ? '?id='.$form->getObject()->getId() : '')) ?>" method="post" id="formNuevo" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
  <?php if (!$form->getObject()->isNew()): ?>
    <input type="hidden" name="sf_method" value="put" />
  <?php endif; ?>
  <!-- Los campos que se guarden en la base de datos deben de aparecer en el formulario -->  
  <span class="oculto"><?php echo $form['numero'] ?></span>
  <div>
       <?php echo $form->renderHiddenFields(false) ?>
       <?php echo $form->renderGlobalErrors() ?> 
       <div id="selectFecha">   
         <?php echo $form['fecha'] ?>
       </div>
       <div id="aceptado">
           <?php echo $form['is_validated']->renderLabel(); ?>
           <?php echo $form['is_validated'] ?>
       </div>
       
       <div id="datos" class="limpiar">
        <div id="datosCliente"  class="sinCliente">
            <span class="oculto"><?php echo $form['cliente_id'] ?></span>
            <input type="text" id="cliente_id"/>
            <div id="datosClienteActual">
                <div id="cliente">
                    <fieldset><legend>Datos del Cliente</legend>
                        <div></div>
                        <h2><?php echo __("ERROR: Cliente no asignado");?></h2>
                    </fieldset>
                </div>
            </div>
        </div>
        <div id="datosVehiculo" class="sinVehiculo">
            <input type="hidden" name="crm_factura[vehiculo_id]" id="crm_factura_vehiculo_id" value="-1">
            <div id="datosVehiculoActual">
                <div id="vehiculo">
                    <fieldset><legend>Datos del Vehículo</legend>
                        <div></div>
                        <h2><?php echo __("ERROR: Cliente sin Vehículo");?></h2>
                    </fieldset>
                </div>
            </div>
        </div>
        <div id='fecha' class="editando">
            <fieldset><legend><?php echo __('Fecha ')?></legend></fieldset>
        </div>
    </div>
      
    <div>
	<div class="titulo"><?php echo __('Conceptos') ?></div>
	<div>
	  <table cellspacing="0" class="titulo">
	      <thead>
	        <tr>
	          <th class="cantidad"><?php echo __('Cantidad') ?></th>
	          <th class="concepto_titulo"><?php echo __('Concepto') ?></th>
	          <th class="precio_unitario"><?php echo __('Precio Unit.') ?></th>
	          <!--<th class="subtotal"><?php echo __('Subtotal') ?></th>-->
	          <!--<th class="descuento"><?php echo __('Descuento') ?></th>-->
	          <th class="total"><?php echo __('Total') ?></th>
                  <th class="borrar"><?php echo __('Borrar') ?></th>
	        </tr>
	      </thead>
	  </table>
	</div>
        <div id="conceptos">
                <?php include_partial('factura/conceptos',array('form' => $form, 'accion' => 'editar'))?>
        </div>
    </div>
    <div id="pie">
        <?php include_partial('factura/pie',array('form' => $form, 'accion' => 'editar'))?>
    </div>
</form>
</div>

<script language="JavaScript" type="text/javascript">
$(document).ready(function() { 
            var mostrarContacto = false;
  	    var mostrarVehiculo = false;
            $("#masmenosContacto").hide();
  	    $("#masmenosVehiculo").hide();
            $('#crm_factura_vehiculo_id').val("-1");
            calculaTotal();
            
            $("#cliente_id").autocomplete({
                source: "<?php echo url_for('contacto/ajaxClientes')?>",
                minLength: 0,
                select: function( event, ui ) {
                  $('#crm_factura_cliente_id').val(ui.item.id);  
                  var cliente_id = ui.item.id;
                  var url = "<?php echo url_for('factura/actualizaClienteId'); ?>"+"?cliente_id="+cliente_id;
                  $("#datos").load(url);
                   
                    // !!! Important !!! 
                    // always return false to prevent standard browser submit and page navigation 
                  return false; 
                },

            });
                        
  	    $("#mostrarOcultarContacto").click(function () {
  			$("#masmenosContacto").toggle("slow");
                        if (mostrarContacto){
  	  			mostrarContacto = false;
  	  			$("#mostrarOcultarContacto").addClass('mostrarMasDatos');
  	  		    $("#mostrarOcultarContacto").removeClass('ocultarMasDatos');
  			}else{
  	  			mostrarContacto = true;
  	  			$("#mostrarOcultarContacto").removeClass('mostrarMasDatos');
  	  			$("#mostrarOcultarContacto").addClass('ocultarMasDatos');
  	  		}
  		});    
  		$("#mostrarOcultarVehiculo").click(function () {
  			$("#masmenosVehiculo").toggle("slow");
                        if (mostrarVehiculo){
  	  			mostrarVehiculo = false;
  	  			$("#mostrarOcultarVehiculo").addClass('mostrarMasDatos');
  	  		    $("#mostrarOcultarVehiculo").removeClass('ocultarMasDatos');
  			}else{
  	  			mostrarVehiculo = true;
  	  			$("#mostrarOcultarVehiculo").removeClass('mostrarMasDatos');
  	  			$("#mostrarOcultarVehiculo").addClass('ocultarMasDatos');
  	  		}
  		});  
                var aceptar = function () {
		    var vehiculo = $('#crm_factura_vehiculo_id option:selected').val();
                    var cliente = $('#crm_factura_cliente_id').val();
                    if ((vehiculo)&&(cliente)){
                            $('#formNuevo').submit();
                    }
  		};
  		var cancelar = function () {
  			$("#nuevo").dialog("destroy");
			$("#nuevo").remove();
			window.location = "<?php echo url_for('@crm_factura'); ?>";
  		};
  		
  		var dialogOpts = {
  			autoOpen: true,
  			width:950,
  			minHeight:600,
  			closeOnEscape: true,
  			modal: true,
  			buttons: {
  	  			"<?php echo __("Guardar")?>": aceptar,
  				"<?php echo __("Cancelar")?>": cancelar,
  			},
  			open: function() {
      			$(this).parents('.ui-dialog-buttonpane button:eq(3)').focus();
    		}
  		};
  		$("#nuevo").dialog(dialogOpts);
                // AJAX
                $('#crm_factura_vehiculo_id').change(function() {
                    // inside event callbacks 'this' is the DOM element so we first 
                    // wrap it in a jQuery object and then invoke ajaxSubmit 
                    var id = $('#crm_factura_vehiculo_id option:selected').val();
                    var url = "<?php echo url_for('factura/actualizaVehiculoId'); ?>"+"?vehiculo_id="+id;
                    $("#datosVehiculoActual").load(url);
                    
                    // !!! Important !!! 
                    // always return false to prevent standard browser submit and page navigation 
                    return false; 
                });
                $('.cantidad').change(function() {
                    calculaConcepto($(this));
                    calculaTotal();
                });
                
                $('.borrar').change(function() {
                    // si el checkbox esta marcado
                    // añado la clase tachado a todos los td hermanos.
                    if ($(this).is(":checked")){
                        addClase($(this),"tachado");
                    }else{
                        delClase($(this),"tachado");
                    }
                    calculaTotal();
                });
                
                $('.precio_unitario').change(function() {
                    calculaConcepto($(this));
                    calculaTotal();
                });
                
                $("input[name='crm_factura[descuento]']").change(function() {
                    calculaTotal();
                });
                
                function calculaConcepto(objeto)
                {
                    var name = objeto.attr('name'); //input[name="code"]
                    var substr = name.split('[');
                    var indice = substr[2].split(']')[0];
                    var cantidad = "crm_factura[CrmFacturaConcepto]["+indice+"][cantidad]";
                    var precio_unitario = "crm_factura[CrmFacturaConcepto]["+indice+"][precio_unitario]";
                    var subtotal = "crm_factura[CrmFacturaConcepto]["+indice+"][subtotal]";
                    var descuento = "crm_factura[CrmFacturaConcepto]["+indice+"][descuento]";
                    var total = "crm_factura[CrmFacturaConcepto]["+indice+"][total]";
                    var cantidadValor = $("input[name='"+cantidad+"']").val();
                    var precio_unitarioValor = $("input[name='"+precio_unitario+"']").val();
                    
                    // si no son numeros la cantidad y el precio_unitario los define a 0
                    if (isNaN(cantidadValor)) {cantidadValor="0";}
                    if (isNaN(precio_unitarioValor)) {precio_unitarioValor="0";}
                    
                    var subtotalValor = cantidadValor * precio_unitarioValor;
                    var descuentoValor = 0;
                    
                    if (precio_unitarioValor!=""){
                        subtotalValor = redondear(subtotalValor,2);
                        descuentoValor = redondear(descuentoValor,2);
                        totalValor = redondear(totalValor,2);
                        cantidadValor = redondear(cantidadValor,2);
                        precio_unitarioValor= redondear(precio_unitarioValor,2);

                        var totalValor = subtotalValor - descuentoValor;
                        $("input[name='"+subtotal+"']").val(subtotalValor);
                        $("input[name='"+descuento+"']").val(descuentoValor);
                        $("input[name='"+total+"']").val(totalValor);
                    }
                 }
                 
                 function addClase(objeto, clase)
                 {
                    var name = objeto.attr('name'); //input[name="code"]
                    var substr = name.split('[');
                    var indice = substr[2].split(']')[0];
                    var cantidad = "crm_factura[CrmFacturaConcepto]["+indice+"][cantidad]";
                    var precio_unitario = "crm_factura[CrmFacturaConcepto]["+indice+"][precio_unitario]";
                    var subtotal = "crm_factura[CrmFacturaConcepto]["+indice+"][subtotal]";
                    var descuento = "crm_factura[CrmFacturaConcepto]["+indice+"][descuento]";
                    var total = "crm_factura[CrmFacturaConcepto]["+indice+"][total]";
                    var concepto = "crm_factura[CrmFacturaConcepto]["+indice+"][concepto]";
                    
                    $("input[name='"+cantidad+"']").addClass(clase);
                    $("input[name='"+precio_unitario+"']").addClass(clase);
                    $("input[name='"+subtotal+"']").addClass(clase);
                    $("input[name='"+descuento+"']").addClass(clase);
                    $("input[name='"+total+"']").addClass(clase);
                    $("input[name='"+concepto+"']").addClass(clase);
                 }
                 
                 function delClase(objeto, clase)
                {
                    var name = objeto.attr('name'); //input[name="code"]
                    var substr = name.split('[');
                    var indice = substr[2].split(']')[0];
                    var cantidad = "crm_factura[CrmFacturaConcepto]["+indice+"][cantidad]";
                    var precio_unitario = "crm_factura[CrmFacturaConcepto]["+indice+"][precio_unitario]";
                    var subtotal = "crm_factura[CrmFacturaConcepto]["+indice+"][subtotal]";
                    var descuento = "crm_factura[CrmFacturaConcepto]["+indice+"][descuento]";
                    var total = "crm_factura[CrmFacturaConcepto]["+indice+"][total]";
                    var concepto = "crm_factura[CrmFacturaConcepto]["+indice+"][concepto]";
                    
                    $("input[name='"+cantidad+"']").removeClass(clase);
                    $("input[name='"+precio_unitario+"']").removeClass(clase);
                    $("input[name='"+subtotal+"']").removeClass(clase);
                    $("input[name='"+descuento+"']").removeClass(clase);
                    $("input[name='"+total+"']").removeClass(clase);
                    $("input[name='"+concepto+"']").removeClass(clase);
                 }
                 
                 
                
                function calculaTotal()
                {   
                    // hacemos los calculos
                    var valorTipo = 18;
                    var valorImporte = 0;
                    var valorImporteTachado = 0;
                    var valorBase = 0;
                    var valorIva = 0;
                    var valorTotal = 0;
                    var valorDescuento = parseFloat($("input[name='crm_factura[descuento]']").val());
                    
                    var totales = $('input.total');
                    $.each(totales, function(i, val) {
                        if (val.value != ""){
                            valorImporte = valorImporte + parseFloat(val.value);
                        }
                    });
                    var totalesTachados = $('input.total.tachado');
                    $.each(totalesTachados, function(i, val) {
                        if (val.value != ""){
                            valorImporteTachado = valorImporteTachado + parseFloat(val.value);
                        }
                    });
                    valorImporte = valorImporte - valorImporteTachado;
                    if (isNaN(valorDescuento)){
                        valorBase = valorImporte;
                    }else{
                        valorBase =  valorImporte - valorDescuento;
                    }
                    valorIva = (valorBase*valorTipo)/100;
                    valorTotal = valorBase+valorIva;
                    
                    valorTipo = redondear(valorTipo,2);
                    valorImporte = redondear(valorImporte,2);
                    valorDescuento = redondear(valorDescuento,2);
                    valorBase = redondear(valorBase,2);
                    valorIva = redondear(valorIva,2);
                    valorTotal = redondear(valorTotal,2);
                    
                    // Escribimos los resultados
                    $("input[name='crm_factura[tipo]']").val(valorTipo);
                    $("input[name='crm_factura[importe]']").val(valorImporte);
                    $("input[name='crm_factura[descuento]']").val(valorDescuento);
                    $("input[name='crm_factura[base]']").val(valorBase);
                    $("input[name='crm_factura[iva]']").val(valorIva);
                    $("input[name='crm_factura[total]']").val(valorTotal);
                }
                
                function redondear(sVal, nDec){ 
                    var n = parseFloat(sVal); 
                    var s = "0.00"; 
                    if (!isNaN(n)){ 
                    n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec); 
                    s = String(n); 
                    s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1); 
                    s = s.substr(0, s.indexOf(".") + nDec + 1); 
                    } 
                    return s; 
                } 
 }); 
</script>

<script language="JavaScript" type="text/javascript">
	$('input[type="text"]').focus(function() {
	    $(this).addClass("focus");
	    $(this).parent().parent().addClass("focustr");
	});
	$('input[type="text"]').blur(function() {
	    $(this).removeClass("focus");
	    $(this).parent().parent().removeClass("focustr");
	});
	$('textarea').focus(function() {
	    $(this).addClass("focus");
	    $(this).parent().parent().addClass("focustr");
	});
	$('textarea').blur(function() {
	    $(this).removeClass("focus");
	    $(this).parent().parent().removeClass("focustr");
	});
        $('select').focus(function() {
	    $(this).addClass("focus");
	    $(this).parent().parent().addClass("focustr");
	});
	$('select').blur(function() {
	    $(this).removeClass("focus");
	    $(this).parent().parent().removeClass("focustr");
	});
</script>